約 387,392 件
https://w.atwiki.jp/gcmatome/pages/7613.html
ここは掲示板が使用できない時に使う臨時用の判定変更議論場です。 臨時用判定変更議論スレ ゲームカタログ掲載ゲーム記事の判定の変更に関する議論スレです。 このスレでは必須手続きが全て完了したものの議論のみ行うことができます。 提案する場合は手続きに不足がないか、また期限の際に行わなければならない処理等十分確認してください。 判定についての疑問等で意見を求める場合は意見箱へお願いします。 手続き方法 判定の変更について 判定変更議論手続所 名前 コメント すべてのコメントを見る 臨時用判定変更議論スレ避難所 ここは本スレの議論進行が同時期に集中した場合の避難所として使います。 ここを使った判定変更の提案の際は、適宜誘導してください。 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/avocadolocomoco/pages/129.html
アーリスラヴィア社会主義共和国連邦 Союз Ариславских Социалистических Республик imageプラグインエラー ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (saasa.png) このぺージは人民最高議会の承認を受けています。 Эта страница была одобрена Верховным народным собранием. アーリスラヴィア社会主義共和国連邦国歌 Государственный гимн Союза Ариславии Социалистических Республик 国家機関一覧 マーガトロイド記念妖精研究所 アーリスラヴィア共産党 アーリスラヴィア連邦軍 国家基本情報 アーリスラヴィア社会主義共和国連邦憲法 1:ア連人民は以下の義務を負う。 緊急招集などの軍務 私有財産の国有化の了承 同志アリス書記長(東方projectのアリス・マーガトロイド)の功績・可憐さを称える 宗教の否定(ゲーム内・MFS非公式サーバーのみ) リアルで一日最低でも2食の食事(間食はカウントしない) 人民最高議会での議決への参加 1週間に一度は天体観測を行い、獲得ミーニャの3割を国家の倉庫へ入れる 2:ア連邦の対外姿勢は以下に定める通りである。 宗教(ピングリアーニャの東方正教会を除く)の否定 資本主義の容認 国家元首として正式に対外発表を行う場合、ア連邦のチャンネルにて関係国指導者にメンションを飛ばす。 基本的に国内は通行可能 国内での不正行為は第一書記宣言により事実を確認し、その都度対応を取る 3:ア連邦への他国家による攻撃行為の対処 ア連邦に不利益な情報を流したり、ア連邦に武力で侵略を企てる組織・国がある場合、その国を「反革命的国家」に指定する。 「反革命的国家」に対しては事実確認を行い、もしそれが公式の発言・行為であった場合、「聖戦」を開始する手続きを踏むことができる。 「聖戦」を開始するには、書記長・第一書記・人民最高議長の署名と、人民最高議会の3分の2の賛成が必要である。 「聖戦」を開始した場合、いかなる手段を以ても敵に壊滅的な打撃を与える計画を立案し、「反革命的国家」を焦土と化さなければならない。 これにより国家の崩壊が予測されるが、「聖戦総督大連邦政府」を臨時で設置し、ゲリラ的攻撃を加え続ける。 4:「人民の敵」規定について ア連邦、またはア連人民や指導者に対し、不快にさせる行為をしたものは「人民の敵」に分類される。 ア連人民は「人民の敵」に遭遇した場合、非領有地やア連邦国内での速やかな撃退が義務である。 また、当事者が流浪の民であった場合、「人民の敵」から、「反革命的蛮族」に急速に変更される。これは「反革命的国家」と同じ扱いである。
https://w.atwiki.jp/stgl2014/pages/39.html
ここは、学院の運営に関して、皆さんで話し合って決定したことの他、生徒会長の裁きで決定したことを書記が記録していくページです。 記録の対象は、このホームページ内、クラン公式フォーラム等、書記の調査によって判明した、学院の運営に係る決定事項をすべて記録していく予定です。 なお、文中の決定方法に係る用語の定義は次のとおりです。 会長専決:運営上、必要な事項として生徒会長の裁量によって決定したもの。 協議決定:協議に諮られ、投票に至ることなく協議が成立したもの。 投票決定:協議に諮られたもののうち、投票によって決定に至ったもの。 担当:kira_558 任命基準の設定について 会長専決 2015年12月31日制定 クランメンバーの役職のうち、下級士官、上等兵、新兵、予備兵の任命基準を次のとおりとする。 副司令官、人事担当官、戦闘士官、情報将校、需品科士官、採用担当官は、予備兵を除く構成員からの選抜とする。 ・下級士官:300日以上の所属日数を有し、15,000戦以上の戦闘経験があり、予備兵の条件に該当しないこと。 ・上等兵:100日以上の所属日数を有し、5,000戦以上の戦闘経験があり、予備兵の条件に該当しないこと。 ・新兵:上記以外の者で予備兵の条件に該当しない者 ・予備兵:体験入隊を宣言して加入した者、ゲーム内において迷惑行為等を行ったことが発覚した場合の懲罰による降格処分を受けた者、長期にわたって戦闘記録がなく一時的に予備兵に編入された者 長期間の不参加による強制除隊に関する件 会長専決 2013年12月31日改正 次の条件を満たした場合は、強制除隊とする。 生徒会長が指定する基準日において、30日以上、戦闘の履歴が確認できない場合 強制除隊の手続きは、次のとおりとする。 生徒会長もしくは、生徒会長から権限の委任を受けた者が、基準日の翌日に最終の確認を行い、上記の基準を満たしたと認めたときは、ゲームに規定する脱退の手続きを行うものとする。 (掲示板に掲載された内容を要約) 過去の経過 2013年11月26日決定 (会長専決) 次の条件のいずれかを満たした場合は、強制除隊とする。 A)0戦~10戦程度のまま(要は初期作成アカウントの状態)で、10日間以上そのままの状態が続く場合 B)事前に連絡なく30日以上ログイン・戦闘の履歴が確認できない場合 強制除隊の手続きは、次のとおりとする。 1)基準を満たした段階(上記Aは11日目、上記Bは31日目)で残り猶予10日間のメッセージを送付します。 2)上記のメッセージ送付した後、11日目終了までに何らかのリアクション、連絡、返信いずれもない場合は、12日目をもって、脱退の手続きを取らせて頂くこととします。 (クラン公式フォーラムに掲載された内容を要約) 懲罰による強制除隊に関する件 会長専決 2013年12月19日決定 次の行為が確認されたときは、理由の如何を問わず、追放する。 匿名/実名を問わず、不特定多数の人間の眼に触れるような場所において他者を貶める様な発言、画像等の意図的な投稿が行われたことが確認されたとき (掲示板に掲載された内容を要約)
https://w.atwiki.jp/ssfs/pages/54.html
結婚による氏名変更はどのようにすればよろしいでしょうか? 1、香港現地での手続きが必要です。 2、ご結婚による氏名変更についてですが、氏名変更の場合は、新しく更新されたパスポート(本人確認書類)を再登録する必要があり、ご本人が香港現地のHSBC支店の窓口で手続きを行う必要がございます。他の皆様の場合、ご結婚された後でも旧姓のままで登録しておき、香港に再度行かれる際に支店でパスポート登録、氏名変更の手続きを行っています。
https://w.atwiki.jp/matome8/pages/45.html
1.安全に実験するために 実験における一般注意事項 化学薬品の購入と管理 消毒と滅菌の方法 有害物質と健康管理 実験装置の取扱 実験の手続きと注意点遺伝子組換実験 微生物実験 動物実験 人を対象とする実験 2.放射性物質・放射線 手続き 使用上の注意 3.高圧ガス 液化窒素 その他のガス ガスボンベの取扱 4.電気 分電盤 実験室での電気の使用 その他 5.レーザー レーザー管理区域の設定 レーザー機器使用上の注意 保護具 6.その他の注意事項 強磁場発生装置の使用 低温室での実験 クレーン・フォークリフトの使用 取扱物表示ステッカーについて 施設内で工事作業をする場合の手続き 7.廃棄物の分別と処理 実験系廃棄物 普通産業廃棄物・一般廃棄物
https://w.atwiki.jp/canadamba/pages/17.html
留学が決まったら渡航のための準備になります。 意外に色々とやることがありますので、早めの準備をお勧めします。 ビザについて まずはビザの申請です。 カナダのビザは日本で発給されず、ビザ発給のための通知書が発行されます。 カナダ大使館のホームページから必要書類をダウンロード、記入の上、大使館に提出します。 この際、金融機関の残高証明が必要になりますが、証明書の発行に時間を要する場合もあるので、早めに証明の申請はするようにしてください。 ビザ発給のための通知書は、2007年入学者の場合は、申請後1~2週間で届く場合が多かったようです。 発行された通知書をカナダ入国時に見せて正式なビザを発給してもらいます。 パスポートの申請・更新 滞在期間中にパスポートの期限が切れる場合は更新しておく方がよいでしょう。 滞在中に期限が切れると手続きが色々面倒です。 現在、ICパスポートへの切り替えが進行中で、滞在期間が1年以上の場合は、その旨を伝えれば、残りの期限が1年以上あっても更新できます。 また配偶者や子供の分など新たにパスポートの申請が必要な場合は、期間に余裕をもって申請するようにしましょう。 航空券の手配 出発日時を決め、航空券を手配します。 トロントの場合は、直行便の数が少ないため、直行便希望の場合は、早めに手配することをお勧めします。 入学手続き、サマースクールの手続き 学校への入学手続き、およびサマースクールの手続きは各校によって違うので、それぞれの学校に確認してみてください。 一般的には合格通知をもらった学校から案内が来るはずです。 デポジットの支払いに小切手が必要な場合は、その発行に日数を要することもあるので、早めに金融機関に確認してみてください。 カナダ滞在のための手続き 滞在先の確保 多くの場合、学校のサイトの中で寮や斡旋先の情報提供がされていると思います。 渡航後、当面はホテルやホームステイ先で過ごしながら、物件を探すという人もいます。 不安な場合は、在校生や現地日本人に聞いてみてもよいと思います。 保険について 州によって異なります。 オンタリオ州の場合、学生はUHIP(The University Health Insurance Plan)という保険に入ることが義務になります。 配偶者や家族もこの保険に入るのが義務になります。 学校から案内が来ると思いますが、来ない場合はUHIPホームページで確認してください。 UHIPの適用期間も学校により異なりますので、確認の上、必要に応じてUHIP適用開始までの期間(サマースクールの期間等)は、別の民間保険に入っておいた方がよいでしょう。 この民間保険についても学校から案内がある場合があります。 免許証について 州によって取り扱いが異なります。 一般的にカナダでは国際免許証の有効期間が短いため、現地で運転を考えている場合は、現地の免許を取得する必要があります。 ただ、現地の免許を取得するまでの間、運転が必要な場合は、国際免許証を取得しておくと便利です。 国際免許は日本の免許センターで申請すれば即日発行されます。 医療関係について 常用薬がある場合は、必要分現地に持参することをお勧めします。 また、一般的に歯科治療は保険が効かないので、出国前に治療が必要な場合はしておきましょう。 送金の手配 カナダで留学資金を使うためにやらなければならないことは、 1.カナダで口座を作る 2.カナダに送金できる口座を日本で作る の2つです。 1つめは状況によっては必須ではないかもしれませんが、カナダでは学費や家賃を小切手で払わなければならないケースが多く、そのような条件があれば、カナダの銀行で口座を持っておいた方がよいです。 現地での口座開設に、あるいはそれ以外でも何かとクレジットカードはあった方がよいので、日本でカードを作っておくことをお勧めします。 現地でクレジットカードを作るのは難しいです。 カナダの口座は、日本にいるうちに開設する方法もあります。 オーストラリア・ニュージーランド銀行で、Royal Bank of Canadaの口座開設取次ぎをやってくれます。 この場合は手続きに数週間時間がかかるので早めに開設申請をしてください。 尚、現地でも比較的簡単に口座開設は可能です。 2つめの送金のための口座は、現在口座を持っている金融機関からカナダに送金可能な場合は必要ありませんが、送金不可の場合は、新たに口座開設の必要があります。インターネットバンキングができる口座が便利だと思います。 ちなみに、Citibankで海外送金する場合は、事前に登録した口座にしか送金できません。ゆえに、送金ができるようになるまでのプロセスは、 ①Citiに口座を作って入金 ②カナダの口座を開設 ③その口座番号をCitibankに郵送で知らせる ④登録後インターネットバンキングで送金手続き と4段階を経る必要があります。 カナダに来てから②以降のプロセスをやる場合は、手続き完了までに3~4週間は見ておいた方がよいと思います。 いずれにせよ、当面の生活資金として、日本から現金、トラベラーズチェックは持ってきた方がよいと思います。 引越し手続き 国内の引越しと異なり、日本から海外への引越しは、荷物を最小限にする必要がありますので、計画的に家財処分や荷物の分別を考える必要があります。 家財道具を処分する場合は、早めにリサイクル業者の見積もりや大型ゴミの登録をすることをお勧めします。 カナダへ送る荷物は、渡航時の持込荷物、船便、航空便と用途に応じて分別します。 船便は一番安いですが、トロントだと受け取りまでに50日強かかることになりますので、現地ですぐに必要なものは、渡航時の持ち込み荷物にするなり、航空便で送るなりする必要があります。 持ち込み荷物の場合、航空会社によって重量制限がある場合がありますので、気をつけてください。 その他、現在住んでいる住居を引き払う場合は不動産業者への通知、役所への届出、電気・水道・ガス・電話・NHKやケーブルTV等の生活インフラの停止や住所変更の通知をしておきます。 その他個人で契約しているプロバイダー、クレジットカード、購読雑誌、各種保険も、海外での利用可否の確認や、解約あるいは住所変更の手続きをします。
https://w.atwiki.jp/dista/pages/595.html
〒343-0025 埼玉県越谷市大澤3-6-1 ☆TEL:048-973-0109 ☆最寄駅:東武伊勢崎線 北越谷駅東口 ☆営業時間:10 00~22 00 ☆従業員通用口:建物の裏に納品口があります。 納品口で受付を入店手続きを済ませ、その後東急ストアの事務所に向かって、東急ストア専用の手続きを行って下さい。 ※東急ストアの手続きの際、バッチを受け取るのに1000円必要になります。バッチを返却すると1000円戻ってきます。 買い物する際は、事務所に専用レジが有
https://w.atwiki.jp/picotto/pages/70.html
クリスタル購入 未成年の方へ クリスタルを購入する時の注意 ピコットキングダムは無料でも楽しむことができるゲームですが、 ゲームの進行を助けるアイテムクリスタルを有料で購入いただくことも可能です。 「クリスタル」はゲーム内での入手や、イベント等での配布もございます。 クリスタル購入には、未成年のお客様や保護者様が、安心してサービスを利用できるよう、 年齢別にクリスタルの購入制限がございます。 あなたの年齢により、1か月に購入できるクリスタルの金額がゲームIDごとに決まっております。 必ず正しい年齢を選択の上、購入手続きをお願いします。 年齢 1か月あたりの購入上限額(1ゲームID) 16歳未満 1ヶ月5,000円まで 16~19歳 1ヶ月20,000円まで 20歳以上 制限なし 購入手続きを行うたびに、年齢の画面が表示されます。 月ごとの購入金額は、毎月1日にリセットされます。 必ず正しい年齢を選択して、購入手続きを行ってください。正しくない年齢を申告したことにより発生した問題について、責任は負いかねます。 購入上限額は購入時のクリスタルの金額で計算されます。 なお、上限額はクリスタルの購入手続きを行ったゲームIDごとに設定されますので、ご注意ください。
https://w.atwiki.jp/rs-userfaq/pages/819.html
RK-011 第三の眼 種類: カテゴリ: 必要パワー: 特徴: テキスト: 対応FAQ 公式回答 Q 敵軍ラッシュフェイズ中、BP8000以下の敵軍ユニットのラッシュに対応して、自分は「RS-026 疾風流超忍法」を使用しました。しかし、その効果が相手のRK-011 第三の目「RK-011 第三の眼」で無効にされてしまいました。このとき、自分の手札に2枚目の「RS-247 疾風流超忍法」があった場合、それを改めて使用することはできますか? A はい、できます。 備考 こちらの回答は2008/09/30に内容が変更されました。変更前の回答は以下の通りです。いいえ、それはできません。 指定のタイミング(「~したとき」や「~されたとき」など)に、指定の手続き(「~してもよい」など)を行うことによって発動する効果(コマンドをホールドして発動するカウンターも含みます)は、ひとつのタイミングに対して1つしか発動できません。指定のタイミングに指定の手続きを行って効果を発動した場合、他にも同じタイミングに指定の手続きを行うことで発動できる効果があったとしても、そのタイミングはすでに終了していると考えて、さらに重複して効果を発動することはできません。 手続きを必要とせず自動的に発動する効果については、これに含まれません。
https://w.atwiki.jp/selflearn/pages/25.html
『2.2 階層データ構造と閉包性』 まとめ ここでは、consを用いて (cons 1 (cons 2 (cons 3 (cons 4 nil)))) といった、「値を指すポインタ」と「別の対を指すポインタ」からなる連なりを表現させ、それによって「並び(Sequence)」を構成させる方法・利点を紹介している。 また上記のようなリストだけでなく、次のような木を表現させる手法も紹介している。 (cons (list 1 2) (list 3 4)) 出てくるキーワードと、その説明は以下のとおり。 閉包性(closure property) あるデータが部品から出来ていて、その部品がまた部品からできている。という階層的・内部完結的な構造を持つこと この閉包性は、世間一般のクロージャ(データを束縛した手続き)とは指しているものが異なるので注意。本書では抽象代数の用語を使っている。 ・・・集合の要素にある演算を作用させて得られた要素が、またその集合の要素であるなら、要素の集合はその演算の元で閉じている(=閉包である)・・・ この節はとても長いしバリエーションに富んでいるので、取り組みがいのある内容だ。 各小節の内容 2.2.1 並びの表現 リストは「値を指すポインタ」と「別の対を指すポインタ」からなる対の連なりによって表現できる。たとえば (cons 1 (cons 2 (cons 3 (cons 4 nil)))) という入れ子になった対によって、1-4の値の集合が表現できる。 リストのポイントは、 それぞれの対でcar部は値・cdr部は次の対へのポインタを表している 最後の対のcdr部はnil(*1)を指している という点。で、これを簡単に表現するのが「list」という基本手続き。次の式は上のconsの鎖と同じことを表現している。 (list 1 2 3 4) 一般化すると次のとおり: (list a1 a2 ... an ) ずいぶんリストであることが分かりやすくなった。ちなみに「(list 4)」というように定義することもできるみたい。この場合は「(cons 4 nil)」としたのと同じ(*2)。 リスト演算 リストに対して演算を行う場合は、通常「cdrダウン」と「consアップ」の2手法がよく用いられる。 「cdrダウン」 cdr部を再帰的に辿っていき、その時々のcar部を(必要ならば)順に評価していく方法。結果には要素を評価した結果が返る。 「consアップ」 「cdrダウン」によって得られる1つずつの要素を(演算を行った後で)再びconsによって組み立てていく方法。結果には再構築されたリストが返ってくる。 あと、問題2.20には手続きに任意個の引数を取る方法が書いてある。ここは一つずつ写経しよう。 まず最初は2個以上の引数を取る手続きの定義方法: (define (f x y . z) body ) xとyには値(に限らないけれど)が入り、残りはリストとしてzに入る。引数が2個だけだった場合、zには空リスト(*3)が渡される。 そして、0個以上の引数にしたい場合は次の定義: (define (g . z) body ) にする。任意個の引数は全てzにリストとして渡される、というわけ。ちなみにlambdaで同じように書こうとした場合、fやgは (define f (lambda (x y . z) body )) (define g (lambda (z body ))) になるとのこと。 リスト写像 「リストの各要素に対して、何かの式を適用した結果をリストとして返す」という手続きを実現するために使うmap手続きの紹介。mapはGaucheやguileの基本手続きとして用意されている。 map ある変換をリストの各要素に作用させ、その結果をリストで返す。 mapは簡単な手続きだけど、自分のためにも写経しておく。 (define (map proc items) (if (null? items) () (cons (proc (car items)) (map proc (cdr items))))) リストのcar部をprocで評価して、その結果とcdr部のmapとで対を作るわけか。なるほどなるほど。 ここで思ったんだけど、mapは必ず要素の先頭から処理を行っているので、つまり実行順序があるということを保証したりはしてくれるのだろうか?いや、1.1.5 作用的順序で出てきた正規順序の評価モデルではmapを一度完全に展開してしまうので、順序を保証しているわけではないか。 常々思っているんだけど、関数型言語ではどうやって順序を説明するのだろう? 2.2.2 階層構造 リストは(1 2 3 4)というような単純な数列だけでなく、リストの要素がまたリストであるという、より一般化したデータ構造でも表現できる。 (define x (cons (list 1 2) (list 3 4))) を評価した時の結果は、( (1 2) 3 4)となる。(car x)がリストであることに注目。 ちなみに最初上の定義を見たときに、「あれ?( (1 2) (3 4) )にはならないの?」とはまってしまった。これは(list 1 2)と(list 3 4)をconsによって対にしているからであって、疑問に思ったリストにするには (define y (list (list 1 2) (list 3 4))) としなければならない。 そして、本小節ではリストの長さを得たりその他各種操作を行う手続きを一般化したリスト構造でも適用するための方法・問題が紹介されている。 pair? 引数が対であれば#tを返す。対のとき、()のときは#fを返す。 (define (count-leaves x) (cond ((null? x) 0) ((not (pair? x)) 1) (else (+ (count-leaves (car x)) (count-leaves (cdr x)))))) 本書の62ページ脚注にもあるけれど、cond手続きでの条件分岐の並び順には注意が必要だ。空リスト()はnull?でも該当するし、(not (pair? x))にも該当するから。 リストを扱う処理を書く時のおまじないとして、 空リストかどうかを調べる 対かどうかを調べる という順番をしっかり覚えておいた方が良さそうだ。でもこれ、1.1.5 作用的順序で出てきた作用的順序に依存した評価だよなあ。正規順序の評価だったらどうするんだろう。 木の写像 map手続きは並びを扱うことが出来るのだけれど、再帰を含ませることで木構造に対しても抽象化の能力を得られる。これによって、mapが並びに対する演算の多くを実現できたように、木に対しての演算を抽象化できる、という説明。 (define (scale-tree tree factor) (map (lambda (sub-tree) (if (pair? sub-tree) (scale-tree sub-tree factor) (* sub-tree factor))) tree)) 木を掘り下げていき、その都度出てくるリストに対してfactorをかけているんだね。 2.2.3 公認インタフェースとしての並び 「公認インタフェース」というのは分かりづらい訳になってしまっているかもしれない。原文は「Conventional Interface」となっていて、つまり汎化されたインタフェースのことを表している。 以下の無関係に見えるソース2種類から抽象概念を抜き出し、それぞれをモジュール化する。そのことで順番の入れ替えや将来の変更に強くなるプロセスを作り上げることが大事だということを伝えている。 (define (sum-odd-squares tree) (cond ((null? tree) 0) ((not (pair? tree)) (if (odd? tree) (square tree) 0)) (else (+ (sum-odd-squares (car tree)) (sum-odd-squares (cdr tree)))))) (define (even-fibs n) (define (next k) (if ( k n) () (let ((f (fib k))) (if (even? f) (cons f (next (+ k 1))) (next (+ k 1)))))) (next 0)) これを enumerate (データの数え上げ) filter (データの抽出) map (処理の適用) accumulate (データの積み重ね) という4つのブロックに分ける。するとプログラムはそれぞれ enumerate(tree) → filter(odd?) → map(square) → accumulate(+, ()) と enumerate(integer) → map(fib) → filter(even?) → accumulate(cons, ()) というプロセスに分割できるようになる。あとは各ブロックの処理を実装し、接続さえすれば良いわけだ。 思うに、これはSchemeのリストというデータ構造がしっかりしているから、各ブロックの順番がどのようになっても問題がないんだと思う。これが各モジュールで異なる型・出力を出すようにしているのであれば、色々と問題が発生するはず。 やはり、データフローダイアグラムとインタフェースは大事にしないとなあ、と思った。 写像の入れ子 公認インタフェースの考え方を拡張し、ループの入れ子で実現する処理も行わせることが出来る。 「ループの入れ子」っていうのは、つまりCでいうところの for (int i=0;i n;i++) for (int j=0;j m;j++) array[i][j] = X; みたいなもの。これを手続きの並びで表現することも出来るよ、という話。 ここで{1,2,3}のような順列の全ての組み合わせ({1,2,3},{1,3,2},...)を出力する手続きが紹介されていて面白そうなので写経。 (define (permutations s) (if (null? s) (list s) (flatmap (lambda (x) (map (lambda (p) (cons x p)) (permutations (remove x s)))) s))) (define (remove item seq) (filter (lambda (x) (not (= x item))) seq)) gosh (permutations (1 2 3)) ((1 2 3) (1 3 2) (2 1 3) (2 3 1) (3 1 2) (3 2 1)) えっと、色々が抽象化されてくると処理が追えなくなってきている・・・。 書籍にある生成の順番をこちらにも書いてみると、 Sの各要素xに対し、集合S-x(=xを除いたSの要素からなる集合のこと)の順列の並びを再帰的に生成する その並びの前にxを連結するこれはSの各xについて、Sのxで始まる順列の並びを生成する すべてのxについてこの並びを組み合わせる Sの全ての順列の完成 となるとのこと。これが上記のソースによって行われているらしい。自分で作れって言われても難しいなあ。どうせこの後の演習で出てくるんだろうけれどさ。 2.2.4 例:図形言語 さあいよいよ見栄えのする節だ、と思っていたら問題発生。何と、うちのMac(Mac OSX10.3.9)では表示に必要なSLIBをビルドできない。 エラーメッセージを見てもちょっと理由が分からないし、困った。(*4) というわけで、この節は脳内インタープリタで進めていこうと思う。 高階演算 ここでのポイントになっているのは、図形言語の閉包性。 (wave) も、 (define wave2 (beside wave (flip-vert wave))) (define wave4 (below wave2 wave2)) も、どれも画像を表示させるというペインタであり、どれも外から同じように使用できるという点が重要。デザインパターンでAdaptorパターンがあったけれど、あんなイメージかな。重ねても重ねてもインタフェースが変わらないという。いや、Compositeパターンか。 だから、抽象化がものすごく容易になる。出力を変えたいときに、手続きを呼ぶ側を変えなくても済むから。途中の処理だけ差し替えるというのもOK。 これまでもリストという同じインタフェースを返す手続きを沢山作ってきたように、小さなパーツの組み合わせを一貫したインタフェースのままで表現することは大事なんだね。 フレーム 図形言語を描く際に予め座標系を定義してあげることで、アフィン変換程度の変形が行えるという話。 ポイントは、図形を描く手続きに依存しないつくりになっていること。与えられたxy座標を適切に変換するだけの処理として実装することで、図形を描く手続きがどう変化しても対応できるようになっている。 一般的な設計では常套手段だ。 ペインタ ペインタ、という図形描画を行う手続きに対して抽象化の考えを推し進め、フレームを与えることでその内部に沿った形で線分を書けるようになる。 ポイントとして、ペインタを手続きとして表現することで、他の描画処理と合成・混同できるようになることだ。 ここで、問題2.23でも出てきたfor-eachという手続きが使われている。この手続きはGaucheにも標準実装されていて、マニュアルには次のように書かれている。 Function for-each proc list1 list2 ... [R5RS] 手続きprocをリストの各エレメントに対して順に適用します。procの結果は捨てられます。for-eachの戻り値は定義されていません。複数のリストが与えられた場合、一番短いリストが終了した時点でfor-eachは終了します。→ Gaucheリファレンスマニュアル:マッピング draw-lineという戻り値が必要ない(かつ副作用のある)手続きを使用しているから、mapを使えないんだね。なるほど。 頑健な設計のための言語レベル これら図形言語を通して学んだことは、 レベルに応じた部品を組み合わせて複雑さに対応する 各レベルは、その次のレベルの基本要素として扱うよう設計する 同じインタフェースを持つことで、組み合わせても外からは同じ使い方ができるようにする を意識してデザインする、ということ。資料ではこれを「成層設計(Stratified design)」と呼んでいる。それにより、 仕様の小規模な変更は,一部の実装変更で対応できる できるだけ多くの階層で変更に対応できる(どのレベルの変更も許容できる) というメリットが生まれるわけだ。とはいえ、そこまで頑健な設計にするのは相当難しいけれどね。実際には、当初は「絶対アリエナイ」と思っていた仕様変更が入ることはざらにあるわけで。 個人的には、この辺の完成は苦労することでしか身に付かないと思ってます。